#!/usr/bin/env python
# -*- coding: utf-8 -*-

class Options:
	config = {}
	keys = []
	filename = ""
	#dizionario
	keywords = {
		'user':'u',
		'passwd':'p',
		'dest':'d'
	}
	def __init__(self,filename="netfinity.conf"):
		self.filename = filename
		self.read()
	def read(self):
		try:
			f = file(self.filename)
		except IOError:
			print "File di configurazione mancante"
			#forse si potrebbe gestire in un'altra maniera
			return False
		for line in f:
			line = line.partition("#")[0].strip()
			if line:
				t = line.partition(" ")
				if t[2]:
					try:
						k = self.keywords[t[0]]
					except KeyError:
						k = t[0]
					self.keys.append(k) #mantiene l'ordinamento
					if self.config.has_key(k):
						self.config[k].append(t[2])
					else:
						self.config[k] = [t[2]]
		f.close()
	#la write non funziona! anzi funziona ma devasta i .conf
	# (non supporta i commenti e le keyword estese)
	def write(self):
		try:
			f = file("#"+self.filename,"w")
		except:
			print "Impossibile salvare la configurazione"
			return False
		config = self.config.copy() #poi la distruggo
		print config
		for k in self.keys:
			f.write("%s %s\n" % (k,config[k][0]))
			del config[k][0]
		f.close()
	def set(self,k,v):
		self.config[k] = v
		self.keys.append(k)
	def __getitem__(self,item):
		return self.config[item]
	def __call__(self):
		return self.config
	#leggo i parametri dalla linea di comando
	def get_params(self):
		params = {'text':""}
		from sys import argv
		k = False
		for arg in argv[1:]:
			if arg[0] == '-':
				#aggiungo il flag
				if k:
					params[k] = ""
				k = arg[1:]
			elif k:
				#print '['+k+']',arg
				params[k] = arg
				k = False
			else:
				#print arg
				params['text'] += " " + arg
		#aggiungo il flag (l'ultimo)
		if k:
			params[k] = ""
		return params

